Das CyberGL-Demoverzeichnis Dieses Verzeichnis enthält eine Reihe von Demo-Programmen, die einige der zahlreichen CyberGL-Möglichkeiten demonstrieren. Die Programme sind sehr einfach gehalten und dürftig getestet, da sie lediglich zum Testen der CyberGL-Bibliothek gedacht waren. Zunächst ein Überblick über den Inhalt des Verzeichnisses: cybergl.library.030 cybergl.library für 68030 + 68882 cybergl.library.040 cybergl.library für 68040 cybergl.library.060 cybergl.library für 68060 readme.txt Diese Datei objects (dir) Das Lightwave-Objekt-Verzeichnis Cow Die berühmte Kuh CyberGL Der Schriftzug "CyberGL" als FlatSmooth Eine teils Gouraud- teils Flat-geshadete Kugel MovieChair Ein Regisseur-Stuhl SimpleChair Ein einfacher gepolsterter Stuhl Sofa Ein Sofa Stool Ein Barhocker Torus Ein Torus Two_Spheres Zwei farbige Kugeln reflect (dir) Das Verzeichnis mit den Environment-Maps cafe Ein Cafe Environ Metallische Umgebung office Ein Büro river Ein Fluß temple Ein Tempel im Grünen examples (dir) Das Verzeichnis mit den Demoprogrammen bigPoly Zeichnet einen Kreis bigPoly.info Zugehörige Icon-Datei cubes Zeichnet eine Reihe von Würfeln cubes.info Zugehörige Icon-Datei cubes_anim Zeichnet acht drehbare Würfel cubes_anim.info Zugehörige Icon-Datei cubes_clipped Zeichnet die Würfelszene mit Clipping cubes_clipped.info Zugehörige Icon-Datei cubes_flat Zeichnet die Würfelszene mit Flatshading cubes_flat.info Zugehörige Icon-Datei cubes_fog Zeichnet die Würfelszene im Nebel cubes_fog.info Zugehörige Icon-Datei hsv Zeichnet einen HSV-Farbkreis hsv.info Zugehörige Icon-Datei lwShow Stellt ein Lightwave-Objekt dar lwShow.info Zugehörige Icon-Datei primitives Zeichnet die OpenGL-Primitive primitives.info Zugehörige Icon-Datei select Demonstriert den Selection-Mode select.info Zugehörige Icon-Datei triangles Zeichnet 500 zufällige Dreiecke triangles.info Zugehörige Icon-Datei include (dir) Das Verzeichnis für Include-Dateien cybergl.h Die Headerdatei mit den CyberGL-Datentypen cybergl_pragmas.h Die Headerdatei mit den CyberGL-Pragmas cybergl_protos.h Die Headerdatei mit den CyberGL-Prototypen Die drei Bibliotheken sind für verschiedene Prozessoren übersetzte Versionen der Bibliothek "cybergl.library" und eine passende Version sollte sich unter dem Namen "cybergl.library" im Verzeichnis "LIBS:" befinden. Die derzeitigen Bibliotheken funktionieren nur einwandfrei, wenn sie maximal EINMAL geöffnet werden und unterstützen kein Palettensharing. Außerdem wird IMMER eine FPU benötigt (diese Voraussetzung wird sich auch in Zukunft nicht ändern, da die CyberGL sehr viele Fließkommaberechnungen durchführt). Die Objekte im Verzeichnis "objects" sind eine Auswahl von Lightwave-Objekten, die mittels "lwShow" dargestellt werden können (Erklärung folgt später). Die Environment-Maps im Verzeichnis "reflect" sind eine Auswahl von Texturen, die "lwShow" benötigt, um Pseudo-Spiegelungen zu demonstrieren. Die Headerdateien zur CyberGL sind im Verzeichnis "include" enthalten. Die Demoprogramme: bigPoly: Aufruf: bigPoly Beispiel: bigPoly 1000 Funktion: Das Programm zeichnet einen Kreis, der durch ein Vieleck mit Eckpunkten angenähert wird. Dieses Programm demonstriert im wesentlichen, daß die Anzahl der Eckpunkte eines Polygons unbegrenzt ist und demonstriert das Verhalten des Gouraudshadings bei unterschiedlich vielen Eckpunkten. cubes: Aufruf: cubes Beispiel: cubes Funktion: Das Programm zeichnet vier Ringe aus jeweils 18 Würfeln und anschließend wird eine Ebene aus 400 Quadraten gezeichnet, die diese Würfelringe durchschneidet. cubes_clipped: Aufruf: cubes_clipped Beispiel: cubes_clipped Funktion: Die gleiche Szene wird durch eine benutzerdefinierte Ebene in zwei Teile zerschnitten. Zuerst wird die Szene hinter der Ebene mit ausgefüllten Flächen gezeichnet. Dann wird die gleiche Szene vor der Ebene als Drahtgittermodell gezeichnet. cubes_flat: Aufruf: cubes_flat Beispiel: cubes_flat Funktion: Die gleiche Szene wird mittels Flatshading gezeichnet. cubes_fog: Aufruf: cubes_fog Beispiel: cubes_fog Funktion: Die gleiche Szene wird in dichten Nebel gehüllt dargestellt. cubes_anim: Aufruf: cubes_anim Beispiel: cubes_anim Funktion: Acht Würfel werden dargestellt und können mit der Maus gedreht werden. hsv: Aufruf: hsv Beispiel: hsv Funktion: Dieses Programm zeichnet einen HSV-Farbkreis. primitives: Aufruf: primitives Beispiel: primitives 7 Funktion: Stellt die CyberGL auf einen der 10 Primitiv-Typen ein und übergigt ihr dann acht Vertices. Dadurch werden mit denselben glVertex-Aufrufen 10 verschieden Ausgaben erzeugt (0: GL_POINTS, 1:GL_LINES, 2: GL_LINE_STRIP, 3: GL_LINE_LOOP, 4: GL_TRIANGLES, 5: GL_TRIANGLE_STRIP, 6: GL_TRIANGLE_FAN, 7: GL_QUADS, 8: GL_QUAD_STRIP, 9: GL_POLYGON). triangles: Aufruf: triangles Beispiel: triangles Funktion: Zeichnet 500 zufällige Dreiecke (zufällige Eckpunkt-Raumpositionen, zufällige Eckpunkt-Farben). Die Dreiecke durchdringen sich und werden durch den Z-Buffer korrekt dargestellt. select: Aufruf: select Beispiel: select Funktion: Zeichnet vier Würfel, die mit der Maus angeklickt werden können. Die CyberGL stellt mittels Selection-Mode fest, welcher der Würfel angeklickt wurde und gibt das Ergebnis auf stdout aus. lwShow: Aufruf: lwShow [] Beispiel: lwShow /objects/Stool Beispile: lwShow /objects/SimpleChair /reflect/Environ Funktion: Dieses Demonstrationsprogramm ist das komplexeste. Es lädt ein Lightwave-Objekt, berechnet die Flächennormalen, glättet das Objekt entsprechend der Materialeinstellungen im Objekt und stellt es dar. Außerdem kann die Darstellung verändert werden: mit den Cursortasten kann das Objekt gedreht werden, mit "<" und ">" kann das Objekt gezoomt werden, mit "+" und "-" wird es entlang der Z-Achse bewegt und mittels der Maus kann es ebenfalls gedreht werden. Wird zusätzlich der optionale zweite Parameter angegeben, so wird dieser als Dateiname einer Environment-Map interpretiert. Diese Map wird als Textur geladen, die Materialeigenschaften des Objekts werden ignoriert und das Objekt erscheint so, als würde sich eine Umgebung in der Oberfläche spiegeln. Diese Demo benötigt zum Teil recht viel Speicher und Rechenzeit.